﻿using System;
using System.Runtime.Serialization;

namespace ET.Score.Service.Dtos.Ci
{
	[DataContract]
	public class PhysicalSectionDataStructDto
	{

        /// <summary>
        /// 物理区段切除状态，Ats解析
        /// </summary>
        [DataMember]
        public byte SectionCutState { get; set; }


		/// <summary>
        /// 物理区段ID
		/// </summary>
		[DataMember]
		public UInt16 PhysicalSectionId { get; set; } /*物理区段ID (初始化字段)*/

		/// <summary>
		/// 包含计轴区段数目
		/// </summary>
		[DataMember]
		public byte AxisSectionSum { get; set; } /*包含计轴区段数目 (配置字段)*/

		/// <summary>
		/// 物理区段包含计轴区段ID数组
		/// </summary>
		[DataMember]
		public UInt16[] AxisSectionIdBuf { get; set; } /*物理区段包含计轴区段ID数组 (初始化字段)*/

		/// <summary>
		/// 物理区段征用状态  0x11:未征用 ;0x22:征用 ;  0x44:申请征用 ; 0x88:申请取消征用 ;
		/// </summary>
		[DataMember]
		public byte SecUseState { get; set; } /*物理区段征用状态(未征用/征用) (动态字段)*/

		/// <summary>
		/// 区段征用所属进路ID  
		/// </summary>
		[DataMember]
		public UInt16 SecUseBelongRouteId { get; set; } /*区段征用所属进路ID (动态字段)*/

		/// <summary>
		/// 物理区段锁闭状态  0x01:上电锁闭 ;0x02:未锁闭 ; 0x04:正常锁闭 ;0x08:异常锁闭 ; 0x10:防护锁闭 ;0x20:延时解锁 ; 0x30:区故解延时解锁 ; 
		/// </summary>
		[DataMember]
		public byte LockState { get; set; } /*物理区段锁闭状态 (动态字段)*/

		/// <summary>
		/// 物理区段封锁状态  0x55:区段未封锁 ;0xaa:区段封锁 ; 
		/// </summary>
		[DataMember]
		public byte FLockState { get; set; } /*物理区段封锁状态 (动态字段)*/

		/// <summary>
		/// 区段进路锁闭所属进路ID
		/// </summary>
		[DataMember]
		public UInt16 RLockBelongRouteId { get; set; } /*区段进路锁闭所属进路ID (动态字段)*/

		/// <summary>
		/// 区段防护锁闭所属进路ID
		/// </summary>
		[DataMember]
		public UInt16 PLockBelongRouteId { get; set; } /*区段防护锁闭所属进路ID (动态字段)*/

		/// <summary>
		/// 物理区段锁闭方向   
		/// </summary>
		[DataMember]
		public byte LockDirection { get; set; } /*物理区段锁闭方向 (动态字段)*/

		/// <summary>
		/// 之前采集状态  0x55:区段空闲 ;0xaa:区段占用 ;
		/// </summary>
		[DataMember]
		public byte PreOccupyState { get; set; } /*之前采集状态(空闲/占用) (动态字段)*/

		/// <summary>
		/// 当前采集状态  0x55:区段空闲 ;0xaa:区段占用 ;
		/// </summary>
		[DataMember]
		public byte CurOccupyState { get; set; } /*当前采集状态(空闲/占用) (动态字段)*/

		/// <summary>
		/// 之前融合后状态   0x55:区段空闲 ;0xaa:区段占用 ;
		/// </summary>
		[DataMember]
		public byte PreMergeOccupyState { get; set; } /*之前融合后状态(空闲/占用) (动态字段)*/

		/// <summary>
		/// 当前融合后状态  0x55:区段空闲 ;0xaa:区段占用 ;
		/// </summary>
		[DataMember]
		public byte CurMergeOccupyState { get; set; } /*当前融合后状态(空闲/占用) (动态字段)*/

		/// <summary>
		/// 区段停稳信息  0x55:未停稳 ; 0xaa:停稳 ;
		/// </summary>
		[DataMember]
		public byte StopSteadyFlag { get; set; } /*区段停稳信息(未停稳/停稳) (动态字段)*/

		/// <summary>
		/// 区段当前占用开始周期  
		/// </summary>
		[DataMember]
		public UInt32 SecCurOccupyStartCycNum { get; set; } /*区段当前占用开始周期 (动态字段)*/

		/// <summary>
		/// 区段占用变空闲开始周期
		/// </summary>
		[DataMember]
		public UInt32 SecOccuToClearStartCycNum { get; set; } /*区段占用变空闲开始周期 (动态字段)*/

		/// <summary>
		/// 自动解锁延时开始周期
		/// </summary>
		[DataMember]
		public UInt32 AutoUnlockStartCycNum { get; set; } /*自动解锁延时开始周期 (动态字段)*/

		/// <summary>
		/// 区故解解锁延时开始周期
		/// </summary>
		[DataMember]
		public UInt32 FaultUnlockStartCycNum { get; set; } /*区故解解锁延时开始周期 (动态字段)*/

		/// <summary>
		/// 区段计轴复位开始周期
		/// </summary>
		[DataMember]
		public UInt32 SectionResetStartCycNum { get; set; } /*区段计轴复位开始周期 (动态字段)*/

		/// <summary>
		/// 保护区段锁闭延时标志  0x00:不延时锁闭;0x01:延时锁闭;
		/// </summary>
		[DataMember]
		public byte ProtectSecLockDelayTimeFlag { get; set; } /*保护区段锁闭延时标志(动态字段)*/
	}
}